package com.example.demo.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;

/**
 * AI服务请求DTO
 * 
 * @author Spring AI Demo
 */
public class AiRequest {
    
    /**
     * 用户输入内容
     */
    @NotBlank(message = "输入内容不能为空")
    @Size(max = 2000, message = "输入内容不能超过2000个字符")
    private String content;
    
    /**
     * 温度参数（可选）
     * 控制生成文本的随机性，0.0表示确定性，1.0表示最大随机性
     */
    @DecimalMin(value = "0.0", message = "温度参数不能小于0.0")
    @DecimalMax(value = "2.0", message = "温度参数不能大于2.0")
    private Double temperature;
    
    /**
     * 最大生成Token数（可选）
     */
    private Integer maxTokens;
    
    /**
     * 系统提示词（可选）
     */
    private String systemPrompt;

    // 构造函数
    public AiRequest() {}

    public AiRequest(String content) {
        this.content = content;
    }

    public AiRequest(String content, Double temperature) {
        this.content = content;
        this.temperature = temperature;
    }

    // Getter和Setter方法
    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Double getTemperature() {
        return temperature;
    }

    public void setTemperature(Double temperature) {
        this.temperature = temperature;
    }

    public Integer getMaxTokens() {
        return maxTokens;
    }

    public void setMaxTokens(Integer maxTokens) {
        this.maxTokens = maxTokens;
    }

    public String getSystemPrompt() {
        return systemPrompt;
    }

    public void setSystemPrompt(String systemPrompt) {
        this.systemPrompt = systemPrompt;
    }

    @Override
    public String toString() {
        return "AiRequest{" +
                "content='" + content + '\'' +
                ", temperature=" + temperature +
                ", maxTokens=" + maxTokens +
                ", systemPrompt='" + systemPrompt + '\'' +
                '}';
    }
} 